package org.lanqiao.tjut.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.lanqiao.tjut.myUtils.MyUtils;

public class SetCharacterEncoding implements Filter {

	// 为了在doFilter方法中使用conf变量，通过全局变量myConf在init方法中赋值
	FilterConfig myConf;

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		// 转发处理过滤器业务
		// 方法的参数是servlet参数，没有支持http协议（强制转换）
		// 1.以下是过滤器主要的业务逻辑
		// 设置所有的servlet的request，response的编码格式
		request.setCharacterEncoding(myConf.getInitParameter("charSet"));
		response.setCharacterEncoding(myConf.getInitParameter("charSet"));

		// 将该请求转发给下一个过滤器或者处理对象，如果不转发，请求会暂停在这个过滤器中
		// chain是代表请求转发的处理链对象
		chain.doFilter(request, response);

	}

	@Override
	public void init(FilterConfig conf) throws ServletException {
		// 初始化方法
		// 从初始化方法中的参数conf中可以获取web.xml配置文件中的初始化参数
		// 成员变量 在filter的init方法中被初始化赋值
		// init方法在doFilter方法之前进行了执行，所以在doFilter方法中直接使用myConf变量
		myConf = conf;
	}

	@Override
	public void destroy() {
		// 消毁方法，回收处理

	}
}
